import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import NProgress from 'nprogress'

/* 配置请求域名 */
export let baseURL = process.env.NODE_ENV == 'development' ? "/dev-api" : '';

//baseURL = '/dev-api' // 测试环境
// baseURL = '请求域名' // 正式环境

/* 创建axios的一个实例 */
var instance = axios.create({
  baseURL,
  // baseURL: '/http', // 配置跨域
  timeout: 25000, // 请求超时毫秒数
  method: 'post'
})

/* 请求拦截器 */
instance.interceptors.request.use(
    config => {
      console.log("=======================");
    // 进度条开启
    NProgress.start()

    // 登陆后请求携带 token
    // const token = store.state.user.token
    // if (token) {
    //   config.headers.token = token
    // }

    return config
  },
  error => {
    // 抛出服务器响应错误
    return Promise.reject(error)
  }
)

/* 响应拦截器 */
instance.interceptors.response.use(
  response => {
    // 进度条关闭
    NProgress.done()
    console.log(response,'response')
    const res = response.data
    // console.log('请求结果', res)

    // 判断服务器返回的数据
    if (res.status !== 200) {
      Message({
        message: res.msg,
        type: 'error',
        duration: 3 * 1000
      })

      // 未登录/没有权限
      if (res.status === 401 ) {
        const title = res.status === -90001 ? '登录已过期' : '抱歉，您没有权限访问'
        MessageBox.alert(`${title}，请重新登录！`, '提示', {
          showClose: false,
          showCancelButton: res.status !== 401
        }).then(() => {
          // 登出
        })
      }

      return Promise.reject(res.msg)
    } else {
      return response.data
    }
  },
  error => {
    // 进度条关闭
    NProgress.done()

    // 抛出服务器响应错误
    Message({
      message: error,
      type: 'error',
      duration: 3 * 1000
    })
    return Promise.reject(error)
  }
)

export default instance
